/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javalee.dao;


import javalee.maps.Produto;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;import javalee.maps.ItensVenda;
import javalee.maps.Venda;
/**

/**
 *
 * @author will
 */
public class ItemVendaDAO  extends DAO{
    private Statement stmt = null;
    
@Override
    public boolean cadastrar(Object obj) {
           
        try{
            ItensVenda p = (ItensVenda) obj;
            String SQL = "insert into itens_venda (id_produto, id_venda, qtdade) values ("+p.getProduto().getId()+","+p.getVenda().getId()+", "+p.getQtdade()+")";
            stmt = conexaoBanco.createStatement();
            stmt.executeUpdate(SQL);
            stmt.close();
            //////
                       
            AtualizarPrecoVenda(p.getVenda().getId());
            //"insert into cliente (nome) values ('?')"
            return (true);
        } 
           catch (SQLException ex) {
             System.out.println("Problema com o SQL");
            // ex.printStackTrace();
             return (false);
       }
    }

    @Override
    public boolean alterar(Object obj) {
        
       // throw(new Throwable("Não é possível alterar!"));
    
        return (false);
    }

    @Override
    public boolean excluir(Object obj) {
        try{
            ItensVenda p = (ItensVenda) obj;
            String SQL = "delete from itens_venda where id_produto = "+p.getProduto().getId()+" and id_venda = "+p.getVenda().getId();
            stmt = conexaoBanco.createStatement();
            stmt.executeUpdate(SQL);
            stmt.close();
            
            AtualizarPrecoVenda(p.getVenda().getId());
            
            return (true);
        } 
           catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
             return (false);
       }
    }
    
    private void AtualizarPrecoVenda(int idVenda){
        try{
            String SQL =  "update venda set valor=(SELECT SUM(iv.qtdade*(SELECT p.valor_venda FROM produto p WHERE id = iv.id_produto)) FROM itens_venda iv WHERE id_venda="+idVenda+") where id="+idVenda;
            stmt = conexaoBanco.createStatement();
            stmt.executeUpdate(SQL);
            stmt.close(); 
        } 
           catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             ex.printStackTrace();
       }
    }

    @Override
    public ArrayList consultar(Object obj) {
         ArrayList<ItensVenda> lista = new ArrayList<ItensVenda>();
         ProdutoDAO prodDAO= new ProdutoDAO();
         VendaDAO vDAO = new VendaDAO();
         Venda v = (Venda)obj;
        try {
            stmt = conexaoBanco.createStatement();
            String query = "SELECT id_produto,"
                    + " id_venda,"
                    + " qtdade from itens_venda where id_venda = "+v.getId();
            
            ResultSet srs = stmt.executeQuery(query);
            while (srs.next()) {
                ItensVenda i = new ItensVenda();
                i.setProduto(prodDAO.consultarPorId(srs.getInt("id_produto")));
                i.setVenda(vDAO.consultarPorId(srs.getInt("id_venda")));
                i.setQtdade(srs.getInt("qtdade"));
                lista.add(i);
            }
           
            stmt.close();
        }
        
           catch (SQLException ex) {
             System.out.println("Problema com o SQL");
             //ex.printStackTrace();
             return (null);
       }
 return lista;
}    
   
}
